#!/bin/bash
# minio-set-bucket-public.sh
# 在 Docker 宿主机外部运行，调用容器内 mc 设置 MinIO 桶的访问权限（交互式输入）

# 容器名（docker-compose.yml 里设置的 container_name）
CONTAINER_NAME="minio"

# 输入 MinIO 登录信息
read -p "请输入 MinIO 访问地址 (默认 http://127.0.0.1:9000): " MINIO_ENDPOINT
MINIO_ENDPOINT=${MINIO_ENDPOINT:-http://127.0.0.1:9000}

read -p "请输入 MinIO 用户名: " MINIO_ACCESS_KEY
read -s -p "请输入 MinIO 密码: " MINIO_SECRET_KEY
echo ""

ALIAS="local"

# 输入桶名称
read -p "请输入要设置的桶名称: " BUCKET
if [ -z "$BUCKET" ]; then
  echo "❌ 桶名称不能为空"
  exit 1
fi

# 选择权限模式
echo "请选择桶的公开模式:"
echo "1) 只读公开 (download, 推荐: 仅允许匿名下载)"
echo "2) 完全公开 (public, ⚠️ 允许匿名上传/删除，危险！)"
read -p "请输入选项 (1 或 2): " MODE

if [ "$MODE" == "1" ]; then
    POLICY="download"
elif [ "$MODE" == "2" ]; then
    POLICY="public"
else
    echo "❌ 无效选项，请输入 1 或 2"
    exit 1
fi

# 在容器内执行 mc 命令
docker exec -i $CONTAINER_NAME mc alias set $ALIAS $MINIO_ENDPOINT $MINIO_ACCESS_KEY $MINIO_SECRET_KEY 2>/dev/null

docker exec -i $CONTAINER_NAME mc anonymous set $POLICY $ALIAS/$BUCKET
if [ $? -eq 0 ]; then
    echo "✅ 已将桶 [$BUCKET] 设置为 [$POLICY] 模式"
    echo "🌐 示例访问地址: $MINIO_ENDPOINT/$BUCKET/文件名"
else
    echo "❌ 设置失败，请检查桶 [$BUCKET] 是否存在"
fi
